﻿/*
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2009 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
*  - GNU General Public License Version 2 or later (the "GPL")
*    http://www.gnu.org/licenses/gpl.html
*
*  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
*    http://www.gnu.org/licenses/lgpl.html
*
*  - Mozilla Public License Version 1.1 or later (the "MPL")
*    http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* Scripts related to the Flash dialog window (see fck_flash.html).
*/

var dialog = window.parent;
var oEditor = dialog.InnerDialogLoaded();
var FCK = oEditor.FCK;
var FCKLang = oEditor.FCKLang;
var FCKConfig = oEditor.FCKConfig;
var FCKTools = oEditor.FCKTools;

//#### Dialog Tabs

// Set the dialog tabs.
dialog.AddTab('Info', oEditor.FCKLang.DlgInfoTab);

if (FCKConfig.FlashUpload)
    dialog.AddTab('Upload', FCKLang.DlgLnkUpload);

if (!FCKConfig.FlashDlgHideAdvanced)
    dialog.AddTab('Advanced', oEditor.FCKLang.DlgAdvancedTag);

// Function called when a dialog tag is selected.
function OnDialogTabChange(tabCode) {
    ShowE('divInfo', (tabCode == 'Info'));
    ShowE('divUpload', (tabCode == 'Upload'));
    ShowE('divAdvanced', (tabCode == 'Advanced'));
}

// Get the selected flash embed (if available).
var oFakeImage = dialog.Selection.GetSelectedElement();
var oEmbed;

if (oFakeImage) {
    if (oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash'))
        oEmbed = FCK.GetRealElement(oFakeImage);
    else
        oFakeImage = null;
}

window.onload = function() {
    // Translate the dialog box texts.
    oEditor.FCKLanguageManager.TranslatePage(document);

    // Load the selected element information (if any).
    LoadSelection();

    // Show/Hide the "Browse Server" button.
    GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none';

    // Set the actual uploader URL.
    if (FCKConfig.FlashUpload)
        GetE('frmUpload').action = FCKConfig.FlashUploadURL;

    dialog.SetAutoSize(true);

    // Activate the "OK" button.
    dialog.SetOkButton(true);

    SelectField('txtUrl');
}

function LoadSelection() {
    if (!oEmbed) return;

    GetE('txtUrl').value = GetAttribute(oEmbed, 'src', '');
    GetE('txtWidth').value = GetAttribute(oEmbed, 'width', '');
    GetE('txtHeight').value = GetAttribute(oEmbed, 'height', '');

    // Get Advances Attributes
    GetE('txtAttId').value = oEmbed.id;
    GetE('chkAutoPlay').checked = GetAttribute(oEmbed, 'play', 'true') == 'true';
    GetE('chkLoop').checked = GetAttribute(oEmbed, 'loop', 'true') == 'true';
    GetE('chkMenu').checked = GetAttribute(oEmbed, 'menu', 'true') == 'true';
    GetE('cmbScale').value = GetAttribute(oEmbed, 'scale', '').toLowerCase();

    GetE('txtAttTitle').value = oEmbed.title;

    if (oEditor.FCKBrowserInfo.IsIE) {
        GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '';
        GetE('txtAttStyle').value = oEmbed.style.cssText;
    }
    else {
        GetE('txtAttClasses').value = oEmbed.getAttribute('class', 2) || '';
        GetE('txtAttStyle').value = oEmbed.getAttribute('style', 2) || '';
    }

    UpdatePreview();
}

//#### The OK button was hit.
function Ok() {
    if (GetE('txtUrl').value.length == 0) {
        dialog.SetSelectedTab('Info');
        GetE('txtUrl').focus();

        alert(oEditor.FCKLang.DlgAlertUrl);

        return false;
    }

    oEditor.FCKUndo.SaveUndoStep();
    if (!oEmbed) {
        oEmbed = FCK.EditorDocument.createElement('EMBED');
        oFakeImage = null;
    }
    UpdateEmbed(oEmbed);

    if (!oFakeImage) {
        oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage('FCK__Flash', oEmbed);
        oFakeImage.setAttribute('_fckflash', 'true', 0);
        oFakeImage = FCK.InsertElement(oFakeImage);
    }

    oEditor.FCKEmbedAndObjectProcessor.RefreshView(oFakeImage, oEmbed);

    return true;
}

function UpdateEmbed(e) {
    SetAttribute(e, 'type', 'application/x-shockwave-flash');
    SetAttribute(e, 'pluginspage', 'http://www.macromedia.com/go/getflashplayer');

    SetAttribute(e, 'src', GetE('txtUrl').value);
    SetAttribute(e, "width", GetE('txtWidth').value);
    SetAttribute(e, "height", GetE('txtHeight').value);

    // Advances Attributes

    SetAttribute(e, 'id', GetE('txtAttId').value);
    SetAttribute(e, 'scale', GetE('cmbScale').value);

    SetAttribute(e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false');
    SetAttribute(e, 'loop', GetE('chkLoop').checked ? 'true' : 'false');
    SetAttribute(e, 'menu', GetE('chkMenu').checked ? 'true' : 'false');

    SetAttribute(e, 'title', GetE('txtAttTitle').value);

    if (oEditor.FCKBrowserInfo.IsIE) {
        SetAttribute(e, 'className', GetE('txtAttClasses').value);
        e.style.cssText = GetE('txtAttStyle').value;
    }
    else {
        SetAttribute(e, 'class', GetE('txtAttClasses').value);
        SetAttribute(e, 'style', GetE('txtAttStyle').value);
    }
}

var ePreview;

function SetPreviewElement(previewEl) {
    ePreview = previewEl;

    if (GetE('txtUrl').value.length > 0)
        UpdatePreview();
}

function UpdatePreview() {
    if (!ePreview)
        return;

    while (ePreview.firstChild)
        ePreview.removeChild(ePreview.firstChild);

    if (GetE('txtUrl').value.length == 0)
        ePreview.innerHTML = '&nbsp;';
    else {
        var oDoc = ePreview.ownerDocument || ePreview.document;
        var e = oDoc.createElement('EMBED');

        SetAttribute(e, 'src', GetE('txtUrl').value);
        SetAttribute(e, 'type', 'application/x-shockwave-flash');
        SetAttribute(e, 'width', '100%');
        SetAttribute(e, 'height', '100%');

        ePreview.appendChild(e);
    }
}

// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">

function BrowseServer() {
    OpenFileBrowser(FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight);
}

function SetUrl(url, width, height) {
    GetE('txtUrl').value = url;

    if (width)
        GetE('txtWidth').value = width;

    if (height)
        GetE('txtHeight').value = height;

    UpdatePreview();

    dialog.SetSelectedTab('Info');
}

function OnUploadCompleted(errorNumber, fileUrl, fileName, customMsg) {
    // Remove animation
    window.parent.Throbber.Hide();
    GetE('divUpload').style.display = '';

    switch (errorNumber) {
        case 0: // No errors
            alert('上传成功!');
            break;
        case 1: // Custom error
            alert(customMsg);
            return;
        case 101: // Custom warning
            alert(customMsg);
            break;
        case 201:
            alert('上传的文件已存在,需要重新命名为 "' + fileName + '"');
            break;
        case 202:
            alert('类型不匹配!');
            return;
        case 203:
            alert("Security error. You probably don't have enough permissions to upload. Please check your server.");
            return;
        case 500:
            alert('The connector is disabled');
            break;
        case 800:
            alert('上传flash不能超过10M!');
            break;
        default:
            alert('Error on file upload. Error number: ' + errorNumber);
            return;
    }

    SetUrl(fileUrl);
    GetE('frmUpload').reset();
}

var oUploadAllowedExtRegex = new RegExp(FCKConfig.FlashUploadAllowedExtensions, 'i');
var oUploadDeniedExtRegex = new RegExp(FCKConfig.FlashUploadDeniedExtensions, 'i');

function CheckUpload() {
    var sFile = GetE('txtUploadFile').value;

    if (sFile.length == 0) {
        alert('请选择要上传的Flash!');
        return false;
    }

    if ((FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test(sFile)) ||
		(FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test(sFile))) {
        OnUploadCompleted(202);
        return false;
    }

    // Show animation
    window.parent.Throbber.Show(100);
    GetE('divUpload').style.display = 'none';

    return true;
}
